package com.tang.javaSwingCaculate.demo;

import lombok.Data;


/**
 * @author tmh
 * @date 2022/12/4 20:52
 * @description 对栈的各种基本操作
 */
@Data
public class MyStackInteger {

    /**
     * 栈的最大容量
     */
    private int maxSize;
    /**
     * 数组-存储栈的元素
     */
    private Integer[] stackArray;
    /**
     * 栈顶指针-指向最顶层元素
     */
    private int top;

    public MyStackInteger(int maxSize) {
        this.maxSize = maxSize;
        this.top = -1;
        this.stackArray = new Integer[maxSize];
    }

    /**
     * 判断栈是否为空
     *
     * @return 是否栈空的标志
     */
    public boolean isMyStackEmpty() {
        if (top == -1) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 入栈操作
     *
     * @param t 入栈元素
     */
    public void push(Integer t) {
        this.stackArray[++this.top] = t;
    }

    /**
     * 出栈操作
     *
     * @return 出栈元素
     */
    public Integer pop() {
        if (top == -1) {
            throw new RuntimeException("栈为空，无法有元素继续出栈");
        }
        return this.stackArray[top--];
    }

    /**
     * 求栈的长度
     *
     * @return 栈的长度
     */
    public int length() {
        if (top == -1) {
            return 0;
        }
        return top + 1;
    }

    /**
     * 遍历栈
     */
    public void traverse() {
        for (int i = 0; i <= top; i++) {
            System.out.print(stackArray[i] + " ");

        }
    }

}

